import { IPSLanguageRes } from '../res/ipslanguage-res';
import { IPSSystemModule } from '../system/ipssystem-module';
import { IPSWFDE } from './ipswfde';
import { IPSWFVersion } from './ipswfversion';
import { IPSModelObject } from '../ipsmodel-object';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSWorkflow
 */
export interface IPSWorkflow extends IPSModelObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 实体流程取消状态值
   * @type {string}
   */
  entityWFCancelState: string;

  /**
   * 实体流程错误状态值
   * @type {string}
   */
  entityWFErrorState: string;

  /**
   * 实体流程结束状态值
   * @type {string}
   */
  entityWFFinishState: string;

  /**
   * 实体流程中状态值
   * @type {string}
   */
  entityWFState: string;

  /**
   * 逻辑名称
   * @type {string}
   */
  logicName: string;

  /**
   * 名称语言资源
   *
   * @type {IPSLanguageRes}
   */
  getNamePSLanguageRes(): IPSLanguageRes | null;

  /**
   * 名称语言资源
   *
   * @type {IPSLanguageRes}
   */
  get namePSLanguageRes(): IPSLanguageRes | null;

  /**
   * 名称语言资源（必须存在）
   *
   * @type {IPSLanguageRes}
   */
  getNamePSLanguageResMust(): IPSLanguageRes;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块
   *
   * @type {IPSSystemModule}
   */
  get psSystemModule(): IPSSystemModule | null;

  /**
   * 系统模块（必须存在）
   *
   * @type {IPSSystemModule}
   */
  getPSSystemModuleMust(): IPSSystemModule;

  /**
   * 流程实体集合
   *
   * @type {IPSWFDE[]}
   */
  getPSWFDEs(): IPSWFDE[] | null;

  /**
   * 流程实体集合
   *
   * @type {IPSWFDE[]}
   */
  get psWFDEs(): IPSWFDE[] | null;

  findPSWFDE(objKey: any): IPSWFDE | null;

  /**
   * 流程版本集合
   *
   * @type {IPSWFVersion[]}
   */
  getPSWFVersions(): IPSWFVersion[] | null;

  /**
   * 流程版本集合
   *
   * @type {IPSWFVersion[]}
   */
  get psWFVersions(): IPSWFVersion[] | null;

  findPSWFVersion(objKey: any): IPSWFVersion | null;

  /**
   * 流程引擎类别
   * @type {string}
   */
  wFEngineCat: string;

  /**
   * 流程引擎类型
   * @type {string}
   */
  wFEngineType: string;

  /**
   * 工作流代理模式
   * @description 值模式 [工作流代理模式] {0：（不使用）、 1：使用流程代理服务（客户端）、 2：提供流程代理服务（服务端）、 3：提供流程代理服务（服务端及客户端） }
   * @type {( number | 0 | 1 | 2 | 3)}
   */
  wFProxyMode: number | 0 | 1 | 2 | 3;

  /**
   * 工作流编号
   * @type {string}
   */
  wFSN: string;

  /**
   * 工作流类型
   * @description 值模式 [工作流类型] {ORG：机构流程、 ORGSECTOR：部门流程、 DEFAULT：默认 }
   * @type {( string | 'ORG' | 'ORGSECTOR' | 'DEFAULT')}
   */
  wFType: string | 'ORG' | 'ORGSECTOR' | 'DEFAULT';

  /**
   * 使用远程引擎
   * @type {boolean}
   */
  useRemoteEngine: boolean;

  /**
   * 使用工作流代理应用
   * @type {boolean}
   */
  useWFProxyApp: boolean;

  /**
   * 启用
   * @type {boolean}
   */
  valid: boolean;
}
